
import axios from "./axios";
import obj from './api.js'
import { getCookie } from "@/utils/cookie.js";



var {user,types,banner,video,cart,address} =obj

export function getBanner() {
    return axios.get(banner);
}

export function getTypes() {
    return axios.get(types).then(data=>{
        var types=data.map(type=>{
            delete type.products;
            return type;
        })
        return new Promise(function(resolve, reject){
            resolve(types);
        })
    })
}

export function getTP(){
    return axios.get(types)
}

export function getVideos(){
    return axios.get(video)
}

export function getPro(typename){
    return axios.get(types).then(data=>{
        if(typename === '全部'){
        var arr=[];
        data.forEach(type=>{
            arr=arr.concat(type.products)
        })
        return new Promise(resolve=>resolve(arr))
    }else{
        var products = data.find(type=>type.name ===typename).products
        return new Promise(resolve=>resolve(products))
    }
    })
}

export function register(params){
    return axios.get(user).then(data=>{
        var index = data.findIndex(item=>item.username===params.username)
        if(index<0){
            return axios.post(user,params).then(data=>{
                return new Promise(resolve=>resolve({
                    code:0,
                    msg:'注册成功'
                }))
            })
        }else{
            return new Promise(resolve=>resolve({
                code:1,
                msg:'账号被占用',
            }))
        }
    })
}

export function login(params){
    return axios.get(user).then(users=>{
        var index=users.findIndex(item=>item.username===params.username &&
        item.password===params.password)
        if(index<0){
            var responseObj={
                code:0,
                msg:'账号或密码错误',
            }
        }else{
            var responseObj={
                code:1,
                msg:'登录成功',
                data:{
                    username:users[index].username,
                    nickname:users[index].nickname,
                }
        }
    }
    return new Promise(resolve=>resolve(responseObj))
})
}

export function addCart(product){
    return axios.get(cart).then(carts=>{
        // console.log(carts);
        var cartPro= carts.find(item=>item.pid === product.pid &&
            item.username === product.username)
            if(cartPro){
                cartPro.number++
                return axios.put(cart + '/' + cartPro.id, cartPro).then(data=>{
                    return new Promise(resolve=>resolve({
                        code:1,
                        msg:'添加成功'
                    }))
                })
            }else{
                return axios.post(cart, product).then(data=>{
                    return new Promise(resolve=>resolve({
                        code:1,
                        msg:'添加成功'
                    }))
                })
            }
    })
}

export function getCartsPro(){
    return axios.get(cart).then(data=>{
        var username = getCookie('username')
        data = data.filter(item=>item.username === username)
        return new Promise(resolve => resolve(data))
    })
}

export function editCart(params){
    return axios.put(cart + '/' + params.id, params).then(data=>{
        return new Promise(resolve=>resolve({
            code:1,
            msg:'数量修改成功'
        }))
    })
}

export function delCart(id){
    return axios.delete(cart + '/' + id).then(data=>{
        return new Promise(resolve=>resolve({
            code:1,
            msg:'购物车商品删除成功！'
        }))
    })
}

// 保存地址
export function saveAddr(params) {
    var username = getCookie('username')
    // 如何判断是添加还是修改
    // console.log(params);
    // 添加的时候，数据中没有id，修改的时候数据中有id - 拿id判断是修改还是添加
    if(params.id) {
        // 修改
        // 要先判断将要修改的这个新地址是默认的还是非默认的
        if(params.isDefault) {
            // 要修改的是默认地址
            // 先将原本的默认改成非默认
            // 获取所有地址
            return axios.get(address).then(data => {
                // 从所有地址中过滤出当前用户的地址
                data = data.filter(item => item.username === username)
                // 从当前用户的地址中找到默认地址
                var defaultAddr = data.find(item => item.isDefault)
                // 判断是否找到
                if(defaultAddr) {
                    // 找到了
                    // 先将原本的默认地址改成非默认
                    defaultAddr.isDefault = false
                    return axios.put(address + '/' + defaultAddr.id, defaultAddr).then(data => {
                        // 改完后，再修改当前默认地址
                        return axios.put(address + '/' + params.id, params).then(data => {
                            return new Promise(resolve => resolve({
                                code: 1,
                                msg: '地址修改成功'
                            }))
                        })
                    })
                } else {
                    // 直接改
                    return axios.put(address + '/' + params.id, params).then(data => {
                        return new Promise(resolve => resolve({
                            code: 1,
                            msg: '地址修改成功'
                        }))
                    })
                }
            })
        } else {
            // 要修改的不是默认地址
            // 直接修改
            return axios.put(address + '/' + params.id, params).then(data => {
                return new Promise(resolve => resolve({
                    code: 1,
                    msg: '地址修改成功'
                }))
            })
        }
    } else {
        // 添加
        // 判断当前要添加的地址是否是默认地址
        if(params.isDefault) {
            // 添加的是默认地址
            // 先将原本的默认地址改成非默认地址
            // 获取当前用户的默认地址
            return axios.get(address).then(data => {
                // 过滤出当前用户的所有地址
                
                data = data.filter(item => item.username === username)
                // 从当前用户的所有地址中找出默认地址
                var defaultAddr = data.find(item => item.isDefault)
                // 判断是否找到了默认地址
                if(defaultAddr) {
                    // 找到了默认地址
                    // 将这个默认地址先改成非默认地址
                    defaultAddr.isDefault = false
                    return axios.put(address + '/' + defaultAddr.id, defaultAddr).then(data => {
                        // 改完后，再添加新的默认地址
                        return axios.post(address, params).then(data => {
                            return new Promise(resolve => resolve({
                                code: 1,
                                msg: '地址保存成功'
                            }))
                        })
                    })
                } else {
                    // 没有找到默认地址
                    return axios.post(address, params).then(data => {
                        return new Promise(resolve => resolve({
                            code: 1,
                            msg: '地址保存成功'
                        }))
                    })
                }
            })
        } else {
            // 添加的是非默认地址
            return axios.post(address, params).then(data => {
                return new Promise(resolve => resolve({
                    code: 1,
                    msg: '地址保存成功'
                }))
            })
        }
    }
    
}

// 获取地址的函数
export function getAddrs() {
    return axios.get(address).then(data => {
        // data是address中的所有数据
        // 从所有数据中筛选出当前用户的数据
        var username = getCookie('username')
        data = data.filter(item => item.username === username)
        return new Promise(resolve => resolve({
            code: 1,
            msg: '地址获取成功',
            data: data
        }))
    })
} 

// 删除地址的函数
export function delAddr(id) {
    return axios.delete(address + '/' + id).then(data => {
        return new Promise(resolve => resolve({
            code: 1,
            msg: '地址删除成功！'
        }))
    })
}

// 获取默认地址
export function getDefaultAddr() {
    // 获取所有地址
    return axios.get(address).then(data => {
        // 获取到当前用户的地址
        var username = getCookie('username')
        data = data.filter(item => item.username === username)
        // 判断当前用户是否有地址
        if(data.length) {
            // 从中找到默认地址
            var defaultAddr = data.find(item => item.isDefault)
            // 判断是否找到
            if(defaultAddr) {
                return new Promise(resolve => resolve({
                    code: 1,
                    msg: '默认地址获取成功',
                    data: defaultAddr
                }))
            } else {
                // 没有默认地址
                return new Promise(resolve => resolve({
                    code: 1,
                    msg: '默认地址获取成功',
                    data: data[0]
                }))
            }
        } else {
            return new Promise(resolve => resolve({
                code: 2,
                msg: '用户暂未添加地址',
                data: null
            }))
        }
    })
}